import { baseUrl } from './api.js'
 
function request({
	url,
	method = 'GET',
	isAuth = true,
	isMask = true,
	data = {},
}) {
	return new Promise((resolve, reject) => {
		// 默认header是空对象,用户无须登陆态,header可以传空对象
		let header = {}
		//	请求方式 GET POST
		if (method) {
			method = method.toUpperCase(); //	小写转大写
			if (method == "POST") {
				header = {
					"content-type": "application/x-www-form-urlencoded"
				}
			}
		}	
		// 需要登陆态
		if (isAuth) {
			let token = uni.getStorageSync('token')
			// 如果没有token,跳转login
			if (!token) {
				uni.navigateTo({
					url: "/pages/login/login"
				})
				reject()
			}
			// 如果需要登陆态,就传递token,否则就不传
			header.token = token
		}
		// 请求前,开启Loading
		if(isMask){
			uni.showLoading({
				title: '正在加载...',
				mask: true
			});
		}
		//发起请求
		uni.request({
			url: baseUrl + url,
			method,
			header,
			data,
			success: res => {
				// 解构返回的数据
				let data = res.data
				if (data.code == 1) {//操作成功
					resolve(data)
				}else if (data.code == 401) {//登录失效
					uni.redirectTo({
						url: '/pages/login/login'
					})
					reject(data.msg)
				}else{//操作失败
					uni.showToast({
						icon:"none",
						title:data.msg,
						duration:3000
					})
					reject(data.msg)
				}
			},
			fail() {
				// 一般是网络错误
				uni.showModal({
					content:'网络错误请重试',
					showCancel:false
				})
				reject(new Error('网络错误请重试'))
			},
			complete() {
				if(isMask){
					// 请求结束后关闭Loading
					uni.hideLoading({noConflict:true})
				}
			}
		});
	})
}
 
export default request